#include <Log4cplusPlugin.h>  // 包含了 Log4cplusSinkFactory
#include <LogBroker.h>
#include <LogManager.h>

void test_log4cplus() {
  // 1. 初始化日志框架核心
  Logging::LogManager::initialize();
  auto& broker = Logging::LogBroker::GetInstance();

  // 2. 使用 Log4cplusSinkFactory 创建 Sinks
  // 创建一个控制台 Sink
  auto console_sink = Logging::Log4cplusSinkFactory::CreateConsoleSink();

  // 创建一个文件 Sink
  Logging::Log4cplusFileSinkOptions file_opts;
  file_opts.filepath = "app_log.log";
  auto file_sink = Logging::Log4cplusSinkFactory::CreateFileSink(file_opts);

  // 3. 将 Sinks 注册到 LogBroker
  // 注意：因为两个 sink 内部都使用 root logger，所以注册任意一个即可。
  // 或者，如果我们希望未来工厂能创建独立的 logger，可以都注册。
  // 在当前实现下，注册一个就够了。
  broker.RegisterSink(console_sink, "*");  // 让这个 Sink 接收所有类别的日志

  // 4. 开始使用日志
  auto logger = Logging::LogManager::get_logger("Network");
  logger->set_level(Logging::LogLevel::kDebug);
  logger->info("Server connection established.");
  logger->debug("Handshake complete.");

  // ...

  // 5. 关闭
  Logging::LogManager::shutdown();  // 这会确保 LogBroker 处理完所有消息
}
